본문으로 건너뛰기

Q. 스코프 체인을 통한 식별자 탐색 과정은 어떻게 진행되는지 설명해 주세요.

🧑🏻‍💻 Answer.


✅ 탐색 과정

  1. 탐색의 시작은 현재 실행 중인 함수 또는 전역 스코프에서 시작합니다.

  2. 식별자를 현재 스코프에서 찾을 수 없으면, 부모 스코프로 이동하여 식별자를 탐색합니다. 부모 스코프는 현재 스코프를 감싸고 있는 외부 함수 또는 블록의 스코프를 의미합니다.

  3. 이러한 프로세스를 전역 스코프(global scope)까지 반복합니다. 전역 스코프는 모든 코드가 접근할 수 있는 가장 바깥쪽 스코프로, 전역 변수 및 함수가 정의된 위치입니다.

  4. 식별자를 찾으면 해당 값에 접근하거나 함수를 호출합니다. 만약 스코프 체인의 끝까지 도달하더라도 식별자를 찾을 수 없다면 "ReferenceError"와 함께 오류가 발생합니다.

이때 JS는 렉시컬 스코프를 따르므로 함수가 호출된 위치가 아닌 정의된 위치를 기준으로 상위 스코프를 결정하게 됩니다.

var x = 10;

function outer() {
var y = 20;

function inner() {
console.log(x); // 10 (전역 스코프에서 가져옴)
console.log(y); // 20 (outer 스코프에서 가져옴)
}

inner();
}

outer();